nvim 打造一个适合自己的开发环境

您所在的位置:网站首页 neovim golang nvim 打造一个适合自己的开发环境

nvim 打造一个适合自己的开发环境

#nvim 打造一个适合自己的开发环境 | 来源: 网络整理| 查看: 265

编辑器以前一直使用vscode + vim 插件,但是由于疫情在家工作任务不太多,就自己使用nvim搭建了一套适合自己的开发环境。

这里分享一下自己主要使用的插件,默认配置以及快捷点设置。

github

以下以mac为例,windows 有些插件可能需要去对应的github 查看安装教程。安装之后的效果是:

nvim 安装

前往github neovim 下载对应版本和系统的文件。这里使用在线编译进行安装下载版本为: 0.7

我专门写了一个shell脚本你可以:

// 创建目录 1. mkdir shell 2. wget https://github.com/zlongCoding/shell/blob/main/nvim.sh /** | bashPath='修改成自己的主路径' | | nvimPath="${bashPath}/Desktop/nvim" //nvim下载地址 | nvimConfig="${bashPath}/.config/nvim" //nvim 配置地址 | zshrcPath="${bashPath}/.zshrc" //zshrc地址 | nvimGitPath='https://github.com/neovim/neovim' **/ 3. ./nvim.sh

功能主要是: 前端开发,go开发、其他的可以自行配置

如果按照我自己的配置其实这样子已经足够了,但是下面我会简单说一下使用的插件。

$ cd ~/.config/nvim $ touch init.lua && mkdir lua ├── lua │ ├── autocmds.lua │ ├── basic.lua │ ├── colorscheme.lua │ ├── keybindings.lua │ ├── plugins.lua │ ├── shell.lua │ ├── lsp │ ├── plugin-config │ ├── shell │ ├── spector │ └── utils └── init.lua

上面是我们的主文件目录

basic.lua

修改vim基本配置

-- utf8 vim.g.encoding = "UTF-8" vim.o.fileencoding = "utf-8" -- jkhl 移动时光标周围保留8行 vim.o.scrolloff = 8 vim.o.sidescrolloff = 8 -- 使用相对行号 vim.wo.number = true vim.wo.relativenumber = true -- 高亮所在行 vim.wo.cursorline = true -- 显示左侧图标指示列 vim.wo.signcolumn = "yes" -- 右侧参考线,超过表示代码太长了,考虑换行 vim.wo.colorcolumn = "80" -- 缩进2个空格等于一个Tab vim.o.tabstop = 2 vim.bo.tabstop = 2 vim.o.softtabstop = 2 vim.o.shiftround = true -- >> if paccker_bootstrap then packer.sync() end end, config = { -- 最大并发数 max_jobs = 16, -- 自定义源 git = { default_url_format = "https://mirror.ghproxy.com/https://github.com/%s" } -- display = { -- 使用浮动窗口显示 -- open_fn = function() -- return require("packer.util").float({ border = "single" }) -- end, -- }, } } )

下面所有的插件在plugins.lua文件中安装:

wbthomason/packer.nvim

nvim 包管理器

use("wbthomason/packer.nvim")

使用:PackerInstall 可以下载插件

在 init.lua引入

-- Packer插件管理 require("plugins") ful1e5/onedark.nvim

主题色

use("ful1e5/onedark.nvim")

在colorscheme.lua文件中写入

vim.o.background = "dark" local colorscheme = "onedark" local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) if not status_ok then vim.notify("colorscheme: " .. colorscheme .. " 没有找到!") return end

在 init.lua引入

-- 主题设置 require("colorscheme")

到这里我们基本可以简单操作一下vim。在控制台输入nvim:

$ nvim //进入vim 编辑界面运行 :PackerInstall

当从github上下载完包只有我们vim 主题色就会发生变化。

其他插件的安装使用都是这个操作。

kyazdani42/nvim-tree.lua

文件目录管理

use( { "kyazdani42/nvim-tree.lua", requires = "kyazdani42/nvim-web-devicons" } )

在plugin-config目录,创建nvim-tree.lua文件添加如下配置

-- https://github.com/kyazdani42/nvim-tree.lua -- local nvim_tree = require'nvim-tree' local status, nvim_tree = pcall(require, "nvim-tree") if not status then vim.notify("没有找到 nvim-tree") return end -- 列表操作快捷键 local list_keys = require("keybindings").nvimTreeList local g = vim.g g.nvim_tree_add_trailing = 0 -- append a trailing slash to folder names g.nvim_tree_git_hl = 0 g.nvim_tree_highlight_opened_files = 0 -- --这里是升级之后的配置 --[[ g.nvim_tree_indent_markers = 1 ]] g.nvim_tree_root_folder_modifier = table.concat {":t:gs?$?/..", string.rep(" ", 1000), "?:gs?^??"} g.nvim_tree_show_icons = { folders = 1, files = 1, git = 1 } nvim_tree.setup({ -- 隐藏 .文件 和 node_modules 文件夹 filters = { dotfiles = false, custom = {".git"} }, disable_netrw = true, hijack_netrw = true, ignore_ft_on_setup = {"dashboard"}, -- auto_close = false, open_on_tab = false, hijack_cursor = true, hijack_unnamed_buffer_when_opening = false, update_cwd = true, update_focused_file = { enable = true, update_cwd = false }, renderer = { indent_markers = { enable = true } }, view = { -- 宽度 width = 36, -- 也可以 'right' side = "left", -- 隐藏根目录 hide_root_folder = true, -- 自定义列表中快捷键 mappings = { custom_only = true --[[ list = list_keys, ]] }, -- 不显示行数 number = false, relativenumber = false, -- 显示图标 signcolumn = "yes" }, git = { enable = false, ignore = false }, actions = { open_file = { resize_window = true } } })

在 init.lua引入

-- 插件配置 require("plugin-config.nvim-tree") goolord/alpha-nvim

欢迎页同理 在plugin-config目录 创建dashboard.lua文件

vim.g.dashboard_default_executive = "telescope" vim.g.dashboard_custom_section = { } vim.g.dashboard_custom_header = { }

在 init.lua引入

require("plugin-config.dashboard")

由于有些字体文件这里无法显示,所有有兴趣的可以查看github 源代码

nvim-web-devicons

nvim-icons

akinsho/bufferline.nvim

tab 文件多文件管理

nvim-lualine/lualine.nvim

状态栏管理

nvim-telescope/telescope.nvim

文件查询,文字查询,文件夹查询等等

LinArcX/telescope-env.nvim

查看系统环境变量

nvim-telescope/telescope-ui-select.nvim

telescope选择ui

folke/which-key.nvim

查看快捷键

nvim-treesitter/nvim-treesitter

主题代码颜色增强

ahmedkhalf/project.nvim

项目管理

:Telescope projects

p00f/nvim-ts-rainbow

彩虹括号

lukas-reineke/indent-blankline.nvim

代码缩进显示标识

akinsho/toggleterm.nvim

切换多个终端

ur4ltz/surround.nvim

vim surround

numToStr/Comment.nvim

注释插件

JoosepAlviste/nvim-ts-context-commentstring

tsx 注释增强

windwp/nvim-autopairs

自动生成关闭标签

windwp/nvim-ts-autotag

tsx 自动生成关闭标签

lewis6991/gitsigns.nvim

git 管理

puremourning/vimspector

调试

SmiteshP/nvim-gps

在bufferline中显示当前的代码名称

rmagatti/goto-preview

弹框定位到具体内容

folke/trouble.nvim

错误美化

TroubleTroubleToggleTroubleToggle workspace_diagnosticsTroubleToggle document_diagnosticsTroubleToggle quickfixTroubleToggle loclistTroubleToggle lsp_references

sbdchd/neoformat

格式化

folke/todo-comments.nvim

TODO list

mg979/vim-visual-multi

多光标操作

michaelb/sniprun

运行代码片段

windwp/nvim-spectre

替换文本

kristijanhusak/vim-carbon-now-sh

截图

RRethy/vim-illuminate

高亮相同单词

unblevable/quick-scope

高亮目标行首字符

liuchengxu/vista.vim

大纲预览

m-demare/hlargs.nvim

函数参数高亮

phaazon/hop.nvim

快速定位单词和某一行

romgrk/nvim-treesitter-context

当前方法吸顶

williamboman/nvim-lsp-installer

lsp 语言下载

neovim/nvim-lspconfig

lsp 语法支持提示

hrsh7th/nvim-cmp

补全引擎

hrsh7th/cmp-vsniphrsh7th/cmp-nvim-lsphrsh7th/cmp-bufferhrsh7th/cmp-pathhrsh7th/cmp-cmdlinehrsh7th/cmp-nvim-lsp-signature-help

都是同一个开发的对lsp的增强,都安装一下

f3fora/cmp-spell

拼写建议

rafamadriz/friendly-snippets

常用的代码片段

onsails/lspkind.nvim

lsp ui美化

tami5/lspsaga.nvim

lsp ui美化

jose-elias-alvarez/nvim-lsp-ts-utils

ts 增强

folke/lua-dev.nvim

lua 增强

b0o/schemastore.nvim

json增强

b0o/schemastore.nvim

json增强

fatih/vim-go

go 语法增强

j-hui/fidget.nvim

lsp 加载进度ui

其实在nvim插件配置中,都是一样的,只要我们掌握的一种,其他自己需要的插件就可以自己安装了。

这里有个重点说一下。

shell

在我自己的配置中,默认打开go 项目会自动生成.vimspector.json文件。创建文件vimspector配置文件

$ mkdir -p lua/spector/vimspector/templates $ touch go.vimspector.json

在go.vimspector.json文件写入:适合go 的.vimspector.json设置

{ "configurations": { "launch": { "adapter": "vscode-go", "configuration": { "request": "launch", "program": "${file}" } } } }

创建文件lua/shell/vimspector.sh:

#!/bin/sh # workdir=$(cd $(dirname $0); pwd) # targetFile= "$workdir/go.mod" targetFileType="" if [ -f "./.vimspector.json" ]; then exit 1 fi if [ -f "./go.mod" ]; then targetFileType="go" elif [ -f "./package.json" ]; then targetFileType="js" fi if [ $targetFileType ]; then ## 这里地址改成自己地址 cp /Users/longzhang/.config/nvim/lua/spector/vimspector/templates/${targetFileType}.vimspector.json .vimspector.json fi

在lua/shell.lua 文件写入:

cmd =("sh /Users/longzhang/.config/nvim/lua/shell/vimspector.sh ") os.execute(cmd)

在init.sh 引入:

-- 执行shell 脚本 require("shell")

当做完这些之后,当我们每次通过vim 进入项目,就是执行shell 脚本,来检查是否符合判断,如果符合对应的判断条件,就会在项目根目录生成.vimspector.json文件

github vim 本作品采用《CC 协议》,转载必须注明作者和本文链接


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3